package site.wanjiahao.recursion;

public class Hanoi {

    // 汉诺塔问题 n表示第几个盘子，p1, p2, p3分别代表A,B,C三根柱子
    public void hanoi(int n, int p1, int p2, int p3) {
        // 确定递归基
        if (n <= 1) {
            System.out.println(n + "盘子从 " + p1 + "移动到" + p3);
            return;
        }
        // 对于第n个盘子，先需要把n - 1个盘子从p1移到p2
        hanoi(n - 1, p1, p3, p2);
        // 将第n个盘子移到p3
        System.out.println(n + "盘子从 " + p1 + "移动到" + p3);
        // 将n - 1个盘子移动到p3
        hanoi(n - 1, p2, p1, p3);
    }

}
